//方法一： 
//#include<bits/stdc++.h>
//using namespace std;
//
//string str;
//long long sum = 0;
//
//int main()
//{
//	cin >> str;
//	int n = str.size();
//	for(int i=0; i<n-1; i++)
//	{
//		if(str[i]=='?' || str[i]==str[i+1] || str[i+1]=='?')
//		{
//			sum++;
//			i++;
//		}
//	}
//	cout << sum << endl;
//	
//	return 0;
//}





//方法二：（动态规划） 
#include<bits/stdc++.h>
using namespace std;

string str;

int main()
{
	cin >> str;
	int n = str.size();
	vector<int> dp(n+1, 0);
	if(str[0]==str[1] || str[0]=='?' || str[1]=='?')
		dp[1] = 1;
	for(int i=2; i<n; i++)
	{
		dp[i] = dp[i-1];
		if(str[i]=='?' || str[i]==str[i-1] || str[i-1]=='?')
			dp[i] = max(dp[i], dp[i-2]+1);
	}
	cout << dp[n-1] << endl;

	return 0;
}